/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package calculadora;

import java.util.Vector;
/**
 *
 * @author Douglas Dávila
 */
public class StackVector<objeto> implements Stack<objeto>{

    protected Vector<objeto> data;

	public StackVector()
	// post: constructs a new, empty stack
	{
		data = new Vector<objeto>(10,1);

	}

    @Override
    public void push(objeto item) {
        // pre: 
        // post: que el item quede agregado al vector
        // el ultimo item agregado sera el primero en salir 
        data.add(item);     
    }

    @Override
    public objeto pop() {
        // pre: el vector no debe estar vacío
        // post: el item agregado de último es el que es removido
        if (this.empty()== true){
            System.out.println("Error");
            data.add(null);
        } return data.remove(size()-1);    
        
    }

    @Override
    public objeto peek() {
        // pre: vector no debe estar vacío
        // post: muestra que item será el siguiente en ser removido al hacer pop
        if (this.empty()== true){
            System.out.println("Error");
            data.add(null);
        }
            return data.get(size() - 1);
    }

    @Override
    public boolean empty() {
        // pre: ---
        // post: retorna true si y solo si el vector esta vacio
        
        return this.size() ==0;
}

    @Override
    public int size() {
        // pre: ---
        // post: retorna el número de elementos en el vector
        return data.size();
    }
}